home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / lh211src.zip / LH.H < prev    next >
C/C++ Source or Header  |  1991-02-19  |  4KB  |  198 lines

  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <io.h>
  4. #include "typedef.h"
  5.  
  6. struct pat {
  7.     struct pat far *nxt;
  8.     char far *bdir;
  9.     char far *fname;
  10.     int cnt;
  11.     char far pname[1];
  12. };
  13.  
  14. #ifndef __TURBOC__
  15. struct ftime    {
  16.     uint    ft_tsec     : 5;    /* Two second interval */
  17.     uint    ft_min     : 6;    /* Minutes */
  18.     uint    ft_hour     : 5;    /* Hours */
  19.     uint    ft_day     : 5;    /* Days */
  20.     uint    ft_month : 4;    /* Months */
  21.     uint    ft_year     : 7;    /* Year */
  22. };
  23. #endif
  24.  
  25. struct datetime {
  26.     ushort time;
  27.     ushort date;
  28. };
  29.  
  30. union stamp {                    /* time stamp */
  31.     ulong u;
  32.     struct ftime s;
  33.     struct datetime t;
  34. };
  35.  
  36. struct head {
  37.     int            headersize;
  38.     char         method[6];
  39.     ulong        packed;
  40.     ulong        skip;
  41.     ulong        original;
  42.     union stamp    dostime;
  43.     time_t        utc;
  44.     int            attr;
  45.     int            level;
  46.     uint        filecrc;
  47.     uint        headcrc;
  48.     int            dos;
  49.     char        *pathname;
  50.     char        *filename;
  51.     int            dirnlen;
  52.     int            filenlen;
  53.     int            info;
  54.     long        currentpos;
  55.     char        *crcpos;
  56. };
  57.  
  58. struct fb {                    /* file name buffer */
  59.     struct fb far *nxt;
  60.     char far *cpos;                    /* position of effective path name */
  61.     char far *fpos;                    /* position of file name */
  62.     long time;
  63.     char used;
  64.     char far fname[1];
  65. };
  66.  
  67. #define iskanji(c) ((uchar)(c) >= 0x80 && \
  68.                     (uchar)(c) <= 0x9f || \
  69.                     (uchar)(c) >= 0xe0 && \
  70.                     (uchar)(c) <= 0xfd    )
  71. #define DELIM ('/')
  72. #define DELIM2 (0xffu)
  73. #define DELIMSTR "/"
  74.  
  75. #if 0
  76. struct srchblk {
  77.     char  *sb_name;
  78.     int    sb_attrib;
  79.     time_t sb_ftime;
  80.     long   sb_fsize;
  81.     void  *sb_buf;
  82. };
  83. #endif
  84.  
  85. /* from mn.c */
  86. #define MAX_PATH 80
  87.  
  88. extern char arcname[MAX_PATH];
  89. extern char filename1[MAX_PATH];
  90. extern char filename2[MAX_PATH];
  91. extern char filename3[MAX_PATH];
  92. extern FILE *file1, *file2, *file3;
  93. extern int  cmdupdate;
  94. extern char workdir[];
  95. #if 0
  96. extern char *pager;
  97. extern char *keyword;
  98. #endif
  99. extern char cmd;
  100. extern char lhtmp1[], lhtmp2[];
  101. extern char work[];
  102. extern int errorlevel;
  103. extern int outredir;
  104.  
  105. void usage(void);
  106. void update_arcstamp(void);
  107.  
  108. /* from append.c */
  109. void copylzh(void);
  110. void regext(char *ext);
  111. void freeze(char *path, char *name);
  112. int append(void);
  113. int endappend(void);
  114. void deletefiles(void);
  115. int freshen(char far *bdir);
  116.  
  117. /* from extract.c */
  118. void extract(char far *bdir);
  119. void extract_internal(FILE *f, char *p);
  120.  
  121. /* from list.c */
  122. void initlist(void);
  123. void list(void);
  124. void endlist(time_t arctime);
  125.  
  126. /* from match.c */
  127. extern struct pat far *pbuf;
  128.  
  129. void initpat(void);
  130. void regpat(char *pattern, char far *bdir);
  131. char far *regbdir(char *bdir);
  132. char *matchfname(char far *pname, char *fname);
  133. char far *matchpat(char *path);
  134. int tstpat(void);
  135.  
  136. /* from header.c */
  137. extern struct head hpb;
  138.  
  139. ulong inithdr(void);
  140. char *gethdr(int *err);
  141. void makehdr(void);
  142. void writehdr(void);
  143. void adjusthdr(void);
  144.  
  145. /* from files.c */
  146. extern struct fb far *fbuf;
  147.  
  148. void mklist(void);
  149. struct fb far *searchfile(char *path);
  150.  
  151. /* from getopt.c */
  152. extern char    flg_r, flg_p, flg_x, flg_m, flg_a, flg_c, flg_n, flg_t, flg_u,
  153.             flg_v, flg_w, flg_i, flg_h, flg_o, flg_z, flg_l, flg_at;
  154.  
  155. int getopt(char *p);
  156.  
  157. /* from util.c */
  158. extern uchar pathdelim;
  159. extern uchar swchar;
  160.  
  161. char *convdelim(char *path, char delim);
  162. char *getfilename(char *path);
  163. char *backpath(char *p);
  164. int getyn(void);
  165. void getswchar(void);
  166. time_t dos2unix(struct ftime *ft);
  167. struct ftime *unix2dos(time_t utc);
  168. int ratio(ulong a, ulong b, int ord);
  169. void copyfile(FILE *f1, FILE *f2, long size, int crc_flg);
  170. void far *e_farmalloc(ulong size);
  171. void *e_malloc(uint size);
  172. void *e_realloc(void *buf, int size);
  173. FILE *myeopen(char *path, char *mode, char *errmes);
  174. FILE *mywopen(char *path, char *errmes);
  175. FILE *myropen(char *path);
  176. void eprintf(char *fmt, ...);
  177.  
  178. /* from dosio.c */
  179. time_t getfiletime(FILE *f);
  180. int setfiletime(FILE *f, time_t utc);
  181. long diskspace(char *filename);
  182.  
  183. #define makedir(c) mkdir(c)
  184.  
  185. /* from error.c */
  186. void error(char *errmes, char *p);
  187. void fileerror(char *err, FILE *file);
  188. void userbreak(int code);
  189. void initbreak(void);
  190.  
  191. /* from path.c */
  192. void form_path(char *p);
  193.  
  194. /* from self.c */
  195. void initsfx(void);
  196. int copysfx(void);
  197. void makesfx(char far *bdir);
  198.